1. Text compression


(Reversing Gideon Zhi's decoder notes)

; Index into pointer table in RAM

$05:F420 C2 20       REP #$20                A:00FF X:8000 Y:B355 D:0000 DB:05 S:1FCC P:eNvmxdIzc HC:436 VC:133 00
$05:F422 68          PLA                     A:00FF X:8000 Y:B355 D:0000 DB:05 S:1FCC P:eNvmxdIzc HC:458 VC:133 00
$05:F423 0A          ASL A                   A:0000 X:8000 Y:B355 D:0000 DB:05 S:1FCE P:envmxdIZc HC:494 VC:133 00
$05:F424 AA          TAX                     A:0000 X:8000 Y:B355 D:0000 DB:05 S:1FCE P:envmxdIZc HC:508 VC:133 00
$05:F425 BF 00 80 7F LDA $7F8000,x[$7F:8000] A:0000 X:0000 Y:B355 D:0000 DB:05 S:1FCE P:envmxdIZc HC:522 VC:133 00

; Dereference pointer to string

$05:F429 A8          TAY                     A:80C8 X:0000 Y:B355 D:0000 DB:05 S:1FCE P:eNvmxdIzc HC:570 VC:133 00
$05:F42A E2 20       SEP #$20                A:80C8 X:0000 Y:80C8 D:0000 DB:05 S:1FCE P:eNvmxdIzc HC:584 VC:133 00
$05:F42C A9 7F       LDA #$7F                A:80C8 X:0000 Y:80C8 D:0000 DB:05 S:1FCE P:eNvMxdIzc HC:606 VC:133 00
$05:F42E 48          PHA                     A:807F X:0000 Y:80C8 D:0000 DB:05 S:1FCE P:envMxdIzc HC:622 VC:133 00
$05:F42F AB          PLB                     A:807F X:0000 Y:80C8 D:0000 DB:05 S:1FCD P:envMxdIzc HC:644 VC:133 00
$05:F430 B9 00 00    LDA $0000,y[$7F:80C8]   A:807F X:0000 Y:80C8 D:0000 DB:7F S:1FCE P:envMxdIzc HC:672 VC:133 00

; __________________________________________________________

; global bank

$00:8249 BD 0C 80    LDA $800C,x[$07:879C]   A:2BB0 X:0790 Y:8E6C D:0000 DB:07 S:1FD2 P:envmxdIzc HC:538 VC:230 00
$00:824C 65 7A       ADC $7A    [$00:007A]   A:001F X:0790 Y:8E6C D:0000 DB:07 S:1FD2 P:envmxdIzc HC:578 VC:230 00
$00:824E 85 7C       STA $7C    [$00:007C]   A:0026 X:0790 Y:8E6C D:0000 DB:07 S:1FD2 P:envmxdIzc HC:610 VC:230 00

; global offset

$00:8250 BD 0E 80    LDA $800E,x[$07:879E]   A:0026 X:0790 Y:8E6C D:0000 DB:07 S:1FD2 P:envmxdIzc HC:642 VC:230 00
$00:8253 85 7E       STA $7E    [$00:007E]   A:E3EC X:0790 Y:8E6C D:0000 DB:07 S:1FD2 P:eNvmxdIzc HC:682 VC:230 00

...

; sequential list skipping

$00:8296 A5 7A       LDA $7A    [$00:007A]   A:FB53 X:3AF0 Y:1F6F D:0000 DB:00 S:1FCD P:envmxdIzC HC:1322 VC:010 00
$00:8298 48          PHA                     A:0007 X:3AF0 Y:1F6F D:0000 DB:00 S:1FCD P:envmxdIzC HC:1354 VC:010 00
$00:8299 AB          PLB                     A:0007 X:3AF0 Y:1F6F D:0000 DB:00 S:1FCB P:envmxdIzC HC:016 VC:011 00
$00:829A BD 0E 80    LDA $800E,x[$07:BAFE]   A:0007 X:3AF0 Y:1F6F D:0000 DB:07 S:1FCC P:envmxdIzC HC:044 VC:011 00
$00:829D AB          PLB                     A:0186 X:3AF0 Y:1F6F D:0000 DB:07 S:1FCC P:envmxdIzC HC:084 VC:011 00
$00:829E AB          PLB                     A:0186 X:3AF0 Y:1F6F D:0000 DB:00 S:1FCD P:envmxdIZC HC:112 VC:011 00
$00:829F 18          CLC                     A:0186 X:3AF0 Y:1F6F D:0000 DB:00 S:1FCE P:envmxdIZC HC:140 VC:011 00
$00:82A0 65 7E       ADC $7E    [$00:007E]   A:0186 X:3AF0 Y:1F6F D:0000 DB:00 S:1FCE P:envmxdIZc HC:154 VC:011 00
$00:82A2 90 06       BCC $06    [$82AA]      A:FD7A X:3AF0 Y:1F6F D:0000 DB:00 S:1FCE P:eNvmxdIzc HC:186 VC:011 00

(...)

$00:82AA 85 7E       STA $7E    [$00:007E]   A:FD7A X:3AF0 Y:1F6F D:0000 DB:00 S:1FCE P:eNvmxdIzc HC:208 VC:011 00

; Bump to next file in list

$00:82AC 8A          TXA                     A:FD7A X:3AF0 Y:1F6F D:0000 DB:00 S:1FCE P:eNvmxdIzc HC:240 VC:011 00
$00:82AD 18          CLC                     A:3AF0 X:3AF0 Y:1F6F D:0000 DB:00 S:1FCE P:envmxdIzc HC:254 VC:011 00
$00:82AE 69 10 00    ADC #$0010              A:3AF0 X:3AF0 Y:1F6F D:0000 DB:00 S:1FCE P:envmxdIzc HC:268 VC:011 00
$00:82B1 AA          TAX                     A:3B00 X:3AF0 Y:1F6F D:0000 DB:00 S:1FCE P:envmxdIzc HC:292 VC:011 00
$00:82B2 C6 80       DEC $80    [$00:0080]   A:3B00 X:3B00 Y:1F6F D:0000 DB:00 S:1FCE P:envmxdIzc HC:306 VC:011 00
$00:82B4 D0 B7       BNE $B7    [$826D]      A:3B00 X:3B00 Y:1F6F D:0000 DB:00 S:1FCE P:envmxdIzc HC:360 VC:011 00

...

; length

$00:82DC BD 0E 80    LDA $800E,x[$07:ABBE]   A:1000 X:2BB0 Y:8E71 D:0000 DB:07 S:1FD2 P:envmxdIzC HC:934 VC:232 00
$00:82DF 85 86       STA $86    [$00:0086]   A:0781 X:2BB0 Y:8E71 D:0000 DB:07 S:1FD2 P:envmxdIzC HC:974 VC:232 00

...

; ----------------
; LZ Decompression
; ----------------

; Note: $86 = length of source bytes

$00:82E8 DA          PHX                     A:007F X:0000 Y:0000 D:0000 DB:00 S:1FD0 P:envmxdIZC HC:966 VC:014 00
$00:82E9 8B          PHB                     A:007F X:0000 Y:0000 D:0000 DB:00 S:1FCE P:envmxdIZC HC:996 VC:014 00
$00:82EA 85 8A       STA $8A    [$00:008A]   A:007F X:0000 Y:0000 D:0000 DB:00 S:1FCD P:envmxdIZC HC:1018 VC:014 00
$00:82EC 86 8C       STX $8C    [$00:008C]   A:007F X:0000 Y:0000 D:0000 DB:00 S:1FCD P:envmxdIZC HC:1050 VC:014 00
$00:82EE 84 78       STY $78    [$00:0078]   A:007F X:0000 Y:0000 D:0000 DB:00 S:1FCD P:envmxdIZC HC:1082 VC:014 00
$00:82F0 8B          PHB                     A:007F X:0000 Y:0000 D:0000 DB:00 S:1FCD P:envmxdIZC HC:1114 VC:014 00
$00:82F1 E2 20       SEP #$20                A:007F X:0000 Y:0000 D:0000 DB:00 S:1FCC P:envmxdIZC HC:1136 VC:014 00
$00:82F3 A5 7C       LDA $7C    [$00:007C]   A:007F X:0000 Y:0000 D:0000 DB:00 S:1FCC P:envMxdIZC HC:1158 VC:014 00
$00:82F5 48          PHA                     A:002B X:0000 Y:0000 D:0000 DB:00 S:1FCC P:envMxdIzC HC:1182 VC:014 00
$00:82F6 AB          PLB                     A:002B X:0000 Y:0000 D:0000 DB:00 S:1FCB P:envMxdIzC HC:1204 VC:014 00

; Grab decompression parameters

$00:82F7 A4 7E       LDY $7E    [$00:007E]   A:002B X:0000 Y:0000 D:0000 DB:2B S:1FCC P:envMxdIzC HC:1232 VC:014 00
$00:82F9 B9 00 00    LDA $0000,y[$2B:FF33]   A:002B X:0000 Y:FF33 D:0000 DB:2B S:1FCC P:eNvMxdIzC HC:1264 VC:014 00
$00:82FC AB          PLB                     A:0002 X:0000 Y:FF33 D:0000 DB:2B S:1FCC P:envMxdIzC HC:1296 VC:014 00
$00:82FD C2 20       REP #$20                A:0002 X:0000 Y:FF33 D:0000 DB:00 S:1FCD P:envMxdIZC HC:1324 VC:014 00
$00:82FF 29 07 00    AND #$0007              A:0002 X:0000 Y:FF33 D:0000 DB:00 S:1FCD P:envmxdIZC HC:1346 VC:014 00
$00:8302 85 6A       STA $6A    [$00:006A]   A:0002 X:0000 Y:FF33 D:0000 DB:00 S:1FCD P:envmxdIzC HC:1370 VC:014 00

; Bump src pointer

$00:8304 C8          INY                     A:0002 X:0000 Y:FF33 D:0000 DB:00 S:1FCD P:envmxdIzC HC:034 VC:015 00
$00:8305 D0 05       BNE $05    [$830C]      A:0002 X:0000 Y:FF34 D:0000 DB:00 S:1FCD P:eNvmxdIzC HC:048 VC:015 00

; Deal with bank wrap

$00:8307 E6 7C       INC $7C
$00:8309 A0 00 80    LDY #$8000

; Save src ptr

$00:830C 84 7E       STY $7E    [$00:007E]   A:0002 X:0000 Y:FF34 D:0000 DB:00 S:1FCD P:eNvmxdIzC HC:070 VC:015 00

; -------------------------------------------------------------

; Select data type

$00:830E A5 6A       LDA $6A    [$00:006A]   A:0002 X:0000 Y:FF34 D:0000 DB:00 S:1FCD P:eNvmxdIzC HC:102 VC:015 00
$00:8310 F0 0C       BEQ $0C    [$831E]      A:0002 X:0000 Y:FF34 D:0000 DB:00 S:1FCD P:envmxdIzC HC:134 VC:015 00
$00:8312 3A          DEC A                   A:0002 X:0000 Y:FF34 D:0000 DB:00 S:1FCD P:envmxdIzC HC:150 VC:015 00
$00:8313 F0 24       BEQ $24    [$8339]      A:0001 X:0000 Y:FF34 D:0000 DB:00 S:1FCD P:envmxdIzC HC:164 VC:015 00
$00:8315 3A          DEC A                   A:0001 X:0000 Y:FF34 D:0000 DB:00 S:1FCD P:envmxdIzC HC:180 VC:015 00
$00:8316 F0 3C       BEQ $3C    [$8354]      A:0000 X:0000 Y:FF34 D:0000 DB:00 S:1FCD P:envmxdIZC HC:194 VC:015 00
$00:8318 3A          DEC A                   A:0001 X:C000 Y:DC0D D:0000 DB:04 S:1FCE P:envmxdIzC HC:1094 VC:069 00
$00:8319 F0 54       BEQ $54    [$836F]      A:0000 X:C000 Y:DC0D D:0000 DB:04 S:1FCE P:envmxdIZC HC:1108 VC:069 00

; #4 = memcpy

$00:831B 4C 9D 83    JMP $839D  [$01:839D]   A:0001 X:B000 Y:9EAA D:0000 DB:01 S:1FD6 P:envmxdIzC HC:074 VC:052 00

; #0

$00:831E A9 FF 0F    LDA #$0FFF              A:0000 X:C000 Y:E2BB D:0000 DB:01 S:1FD6 P:envmxdIZC HC:1366 VC:026 00
$00:8321 85 6C       STA $6C    [$00:006C]   A:0FFF X:C000 Y:E2BB D:0000 DB:01 S:1FD6 P:envmxdIzC HC:022 VC:027 00
$00:8323 A9 EE 0F    LDA #$0FEE              A:0FFF X:C000 Y:E2BB D:0000 DB:01 S:1FD6 P:envmxdIzC HC:054 VC:027 00
$00:8326 85 6E       STA $6E    [$00:006E]   A:0FEE X:C000 Y:E2BB D:0000 DB:01 S:1FD6 P:envmxdIzC HC:078 VC:027 00
$00:8328 A9 F0 00    LDA #$00F0              A:0FEE X:C000 Y:E2BB D:0000 DB:01 S:1FD6 P:envmxdIzC HC:110 VC:027 00
$00:832B 85 72       STA $72    [$00:0072]   A:00F0 X:C000 Y:E2BB D:0000 DB:01 S:1FD6 P:envmxdIzC HC:134 VC:027 00
$00:832D A9 0F 00    LDA #$000F              A:00F0 X:C000 Y:E2BB D:0000 DB:01 S:1FD6 P:envmxdIzC HC:166 VC:027 00
$00:8330 85 70       STA $70    [$00:0070]   A:000F X:C000 Y:E2BB D:0000 DB:01 S:1FD6 P:envmxdIzC HC:190 VC:027 00
$00:8332 A9 04 00    LDA #$0004              A:000F X:C000 Y:E2BB D:0000 DB:01 S:1FD6 P:envmxdIzC HC:222 VC:027 00
$00:8335 85 74       STA $74    [$00:0074]   A:0004 X:C000 Y:E2BB D:0000 DB:01 S:1FD6 P:envmxdIzC HC:246 VC:027 00
$00:8337 80 4F       BRA $4F    [$8388]      A:0004 X:C000 Y:E2BB D:0000 DB:01 S:1FD6 P:envmxdIzC HC:278 VC:027 00

; #1

$00:8339 A9 FF 07    LDA #$07FF              A:0000 X:8000 Y:E3ED D:0000 DB:00 S:1FD3 P:envmxdIZC HC:514 VC:233 00
$00:833C 85 6C       STA $6C    [$00:006C]   A:07FF X:8000 Y:E3ED D:0000 DB:00 S:1FD3 P:envmxdIzC HC:538 VC:233 00
$00:833E A9 DE 07    LDA #$07DE              A:07FF X:8000 Y:E3ED D:0000 DB:00 S:1FD3 P:envmxdIzC HC:570 VC:233 00
$00:8341 85 6E       STA $6E    [$00:006E]   A:07DE X:8000 Y:E3ED D:0000 DB:00 S:1FD3 P:envmxdIzC HC:594 VC:233 00
$00:8343 A9 E0 00    LDA #$00E0              A:07DE X:8000 Y:E3ED D:0000 DB:00 S:1FD3 P:envmxdIzC HC:626 VC:233 00
$00:8346 85 72       STA $72    [$00:0072]   A:00E0 X:8000 Y:E3ED D:0000 DB:00 S:1FD3 P:envmxdIzC HC:650 VC:233 00
$00:8348 A9 1F 00    LDA #$001F              A:00E0 X:8000 Y:E3ED D:0000 DB:00 S:1FD3 P:envmxdIzC HC:682 VC:233 00
$00:834B 85 70       STA $70    [$00:0070]   A:001F X:8000 Y:E3ED D:0000 DB:00 S:1FD3 P:envmxdIzC HC:706 VC:233 00
$00:834D A9 03 00    LDA #$0003              A:001F X:8000 Y:E3ED D:0000 DB:00 S:1FD3 P:envmxdIzC HC:738 VC:233 00
$00:8350 85 74       STA $74    [$00:0074]   A:0003 X:8000 Y:E3ED D:0000 DB:00 S:1FD3 P:envmxdIzC HC:762 VC:233 00
$00:8352 80 34       BRA $34    [$8388]      A:0003 X:8000 Y:E3ED D:0000 DB:00 S:1FD3 P:envmxdIzC HC:794 VC:233 00

; #2

$00:8354 A9 FF 03    LDA #$03FF              A:0000 X:0000 Y:FF34 D:0000 DB:00 S:1FCD P:envmxdIZC HC:216 VC:015 00
$00:8357 85 6C       STA $6C    [$00:006C]   A:03FF X:0000 Y:FF34 D:0000 DB:00 S:1FCD P:envmxdIzC HC:240 VC:015 00
$00:8359 A9 BE 03    LDA #$03BE              A:03FF X:0000 Y:FF34 D:0000 DB:00 S:1FCD P:envmxdIzC HC:272 VC:015 00
$00:835C 85 6E       STA $6E    [$00:006E]   A:03BE X:0000 Y:FF34 D:0000 DB:00 S:1FCD P:envmxdIzC HC:296 VC:015 00
$00:835E A9 C0 00    LDA #$00C0              A:03BE X:0000 Y:FF34 D:0000 DB:00 S:1FCD P:envmxdIzC HC:328 VC:015 00
$00:8361 85 72       STA $72    [$00:0072]   A:00C0 X:0000 Y:FF34 D:0000 DB:00 S:1FCD P:envmxdIzC HC:352 VC:015 00
$00:8363 A9 3F 00    LDA #$003F              A:00C0 X:0000 Y:FF34 D:0000 DB:00 S:1FCD P:envmxdIzC HC:384 VC:015 00
$00:8366 85 70       STA $70    [$00:0070]   A:003F X:0000 Y:FF34 D:0000 DB:00 S:1FCD P:envmxdIzC HC:408 VC:015 00
$00:8368 A9 02 00    LDA #$0002              A:003F X:0000 Y:FF34 D:0000 DB:00 S:1FCD P:envmxdIzC HC:440 VC:015 00
$00:836B 85 74       STA $74    [$00:0074]   A:0002 X:0000 Y:FF34 D:0000 DB:00 S:1FCD P:envmxdIzC HC:464 VC:015 00
$00:836D 80 19       BRA $19    [$8388]      A:0002 X:0000 Y:FF34 D:0000 DB:00 S:1FCD P:envmxdIzC HC:496 VC:015 00

; #3
; @ $7f = LZ run mask
; @ $1ff = LZ window mask
; @ $17e+2 byte cache
; @ 1+8 = 9-bit window
; @ $17e = cache start

$00:836F A9 FF 01    LDA #$01FF              A:0000 X:C000 Y:DC0D D:0000 DB:04 S:1FCE P:envmxdIZC HC:1130 VC:069 00
$00:8372 85 6C       STA $6C    [$00:006C]   A:01FF X:C000 Y:DC0D D:0000 DB:04 S:1FCE P:envmxdIzC HC:1154 VC:069 00
$00:8374 A9 7E 01    LDA #$017E              A:01FF X:C000 Y:DC0D D:0000 DB:04 S:1FCE P:envmxdIzC HC:1186 VC:069 00
$00:8377 85 6E       STA $6E    [$00:006E]   A:017E X:C000 Y:DC0D D:0000 DB:04 S:1FCE P:envmxdIzC HC:1210 VC:069 00
$00:8379 A9 80 00    LDA #$0080              A:017E X:C000 Y:DC0D D:0000 DB:04 S:1FCE P:envmxdIzC HC:1242 VC:069 00
$00:837C 85 72       STA $72    [$00:0072]   A:0080 X:C000 Y:DC0D D:0000 DB:04 S:1FCE P:envmxdIzC HC:1266 VC:069 00
$00:837E A9 7F 00    LDA #$007F              A:0080 X:C000 Y:DC0D D:0000 DB:04 S:1FCE P:envmxdIzC HC:1298 VC:069 00
$00:8381 85 70       STA $70    [$00:0070]   A:007F X:C000 Y:DC0D D:0000 DB:04 S:1FCE P:envmxdIzC HC:1322 VC:069 00
$00:8383 A9 01 00    LDA #$0001              A:007F X:C000 Y:DC0D D:0000 DB:04 S:1FCE P:envmxdIzC HC:1354 VC:069 00
$00:8386 85 74       STA $74    [$00:0074]   A:0001 X:C000 Y:DC0D D:0000 DB:04 S:1FCE P:envmxdIzC HC:010 VC:070 00

; -------------------------------------------------------------

; Init LZ buffer parameters

$00:8388 A6 6E       LDX $6E    [$00:006E]   A:0002 X:0000 Y:FF34 D:0000 DB:00 S:1FCD P:envmxdIzC HC:518 VC:015 00
$00:838A A9 00 20    LDA #$2000              A:0002 X:03BE Y:FF34 D:0000 DB:00 S:1FCD P:envmxdIzC HC:550 VC:015 00
$00:838D 8D 81 21    STA $2181  [$00:2181]   A:2000 X:03BE Y:FF34 D:0000 DB:00 S:1FCD P:envmxdIzC HC:574 VC:015 00
$00:8390 E2 20       SEP #$20                A:2000 X:03BE Y:FF34 D:0000 DB:00 S:1FCD P:envmxdIzC HC:610 VC:015 00
$00:8392 A9 7E       LDA #$7E                A:2000 X:03BE Y:FF34 D:0000 DB:00 S:1FCD P:envMxdIzC HC:632 VC:015 00
$00:8394 8D 83 21    STA $2183  [$00:2183]   A:207E X:03BE Y:FF34 D:0000 DB:00 S:1FCD P:envMxdIzC HC:648 VC:015 00

; Zero out buffer

$00:8397 9C 80 21    STZ $2180  [$00:2180]   A:207E X:03BE Y:FF34 D:0000 DB:00 S:1FCD P:envMxdIzC HC:678 VC:015 00
$00:839A CA          DEX                     A:207E X:03BE Y:FF34 D:0000 DB:00 S:1FCD P:envMxdIzC HC:708 VC:015 00
$00:839B D0 FA       BNE $FA    [$8397]      A:207E X:03BD Y:FF34 D:0000 DB:00 S:1FCD P:envMxdIzC HC:722 VC:015 00

; Prepare dest buffer

$00:839D E2 20       SEP #$20                A:207E X:0000 Y:FF34 D:0000 DB:00 S:1FCD P:envMxdIZC HC:972 VC:061 00
$00:839F A5 8A       LDA $8A    [$00:008A]   A:207E X:0000 Y:FF34 D:0000 DB:00 S:1FCD P:envMxdIZC HC:994 VC:061 00
$00:83A1 8D 83 21    STA $2183  [$00:2183]   A:207F X:0000 Y:FF34 D:0000 DB:00 S:1FCD P:envMxdIzC HC:1018 VC:061 00
$00:83A4 C2 20       REP #$20                A:207F X:0000 Y:FF34 D:0000 DB:00 S:1FCD P:envMxdIzC HC:1048 VC:061 00
$00:83A6 A5 8C       LDA $8C    [$00:008C]   A:207F X:0000 Y:FF34 D:0000 DB:00 S:1FCD P:envmxdIzC HC:1070 VC:061 00
$00:83A8 8D 81 21    STA $2181  [$00:2181]   A:0000 X:0000 Y:FF34 D:0000 DB:00 S:1FCD P:envmxdIZC HC:1102 VC:061 00

$00:83AB E2 20       SEP #$20                A:0000 X:0000 Y:FF34 D:0000 DB:00 S:1FCD P:envmxdIZC HC:1138 VC:061 00
$00:83AD A5 7C       LDA $7C    [$00:007C]   A:0000 X:0000 Y:FF34 D:0000 DB:00 S:1FCD P:envMxdIZC HC:1160 VC:061 00

$00:83AF 48          PHA                     A:002B X:0000 Y:FF34 D:0000 DB:00 S:1FCD P:envMxdIzC HC:1184 VC:061 00
$00:83B0 AB          PLB                     A:002B X:0000 Y:FF34 D:0000 DB:00 S:1FCC P:envMxdIzC HC:1206 VC:061 00
$00:83B1 C2 20       REP #$20                A:002B X:0000 Y:FF34 D:0000 DB:2B S:1FCD P:envMxdIzC HC:1234 VC:061 00

$00:83B3 A4 7E       LDY $7E    [$00:007E]   A:002B X:0000 Y:FF34 D:0000 DB:2B S:1FCD P:envmxdIzC HC:1256 VC:061 00
$00:83B5 E6 86       INC $86    [$00:0086]   A:002B X:0000 Y:FF34 D:0000 DB:2B S:1FCD P:eNvmxdIzC HC:1288 VC:061 00

; ---------------------------------------------------------------

; Decide whether to do straight memory copy

$00:83B7 A5 6A       LDA $6A    [$00:006A]   A:002B X:0000 Y:FF34 D:0000 DB:2B S:1FCD P:envmxdIzC HC:1342 VC:061 00
$00:83B9 C9 04 00    CMP #$0004              A:0002 X:0000 Y:FF34 D:0000 DB:2B S:1FCD P:envmxdIzC HC:1374 VC:061 00
$00:83BC 90 23       BCC $23    [$83E1]      A:0002 X:0000 Y:FF34 D:0000 DB:2B S:1FCD P:eNvmxdIzc HC:030 VC:062 00

; Raw copy of bytes

$00:83BE E2 20       SEP #$20                A:0004 X:B000 Y:9EAA D:0000 DB:23 S:1FD6 P:envmxdIZC HC:540 VC:052 00
$00:83C0 A6 86       LDX $86    [$00:0086]   A:0004 X:B000 Y:9EAA D:0000 DB:23 S:1FD6 P:envMxdIZC HC:562 VC:052 00
$00:83C2 B9 00 00    LDA $0000,y[$23:9EAA]   A:0004 X:0724 Y:9EAA D:0000 DB:23 S:1FD6 P:envMxdIzC HC:594 VC:052 00
$00:83C5 29 FF       AND #$FF                A:0001 X:0724 Y:9EAA D:0000 DB:23 S:1FD6 P:envMxdIzC HC:626 VC:052 00
$00:83C7 C8          INY                     A:0001 X:0724 Y:9EAA D:0000 DB:23 S:1FD6 P:envMxdIzC HC:642 VC:052 00
$00:83C8 D0 0A       BNE $0A    [$83D4]      A:0001 X:0724 Y:9EAB D:0000 DB:23 S:1FD6 P:eNvMxdIzC HC:656 VC:052 00

; Bank bump and wrap

00/83CA: A0 00 80     LDY #$8000
00/83CD: 48           PHA 
00/83CE: 8B           PHB 
00/83CF: 68           PLA 
00/83D0: 1A           INC 
00/83D1: 48           PHA 
00/83D2: AB           PLB 
00/83D3: 68           PLA 

; Keep transferring (low overhead)

$00:83D4 CA          DEX                     A:0001 X:0724 Y:9EAB D:0000 DB:23 S:1FD6 P:eNvMxdIzC HC:678 VC:052 00
$00:83D5 F0 05       BEQ $05    [$83DC]      A:0001 X:0723 Y:9EAB D:0000 DB:23 S:1FD6 P:envMxdIzC HC:692 VC:052 00
$00:83D7 8D 80 21    STA $2180  [$23:2180]   A:0001 X:0723 Y:9EAB D:0000 DB:23 S:1FD6 P:envMxdIzC HC:708 VC:052 00
$00:83DA 80 E6       BRA $E6    [$83C2]      A:0001 X:0723 Y:9EAB D:0000 DB:23 S:1FD6 P:envMxdIzC HC:738 VC:052 00

$00:83DC C2 20       REP #$20                A:00FF X:0000 Y:A5CE D:0000 DB:23 S:1FD6 P:envMxdIZC HC:342 VC:016 00
$00:83DE 4C D0 84    JMP $84D0  [$23:84D0]   A:00FF X:0000 Y:A5CE D:0000 DB:23 S:1FD6 P:envmxdIZC HC:364 VC:016 00

; --------------------------------------------------------

$00:83E1 A5 6E       LDA $6E    [$00:006E]   A:0002 X:0000 Y:FF34 D:0000 DB:2B S:1FCD P:eNvmxdIzc HC:052 VC:062 00
$00:83E3 85 92       STA $92    [$00:0092]   A:03BE X:0000 Y:FF34 D:0000 DB:2B S:1FCD P:envmxdIzc HC:084 VC:062 00

; Clear barrel

$00:83E5 64 94       STZ $94    [$00:0094]   A:03BE X:0000 Y:FF34 D:0000 DB:2B S:1FCD P:envmxdIzc HC:116 VC:062 00

; Check if decoder method barrel needs refreshing (AH)

$00:83E7 46 94       LSR $94    [$00:0094]   A:03BE X:0000 Y:FF34 D:0000 DB:2B S:1FCD P:envmxdIzc HC:148 VC:062 00
$00:83E9 A5 94       LDA $94    [$00:0094]   A:03BE X:0000 Y:FF34 D:0000 DB:2B S:1FCD P:envmxdIZc HC:202 VC:062 00
$00:83EB 29 00 01    AND #$0100              A:0000 X:0000 Y:FF34 D:0000 DB:2B S:1FCD P:envmxdIZc HC:234 VC:062 00
$00:83EE D0 23       BNE $23    [$8413]      A:0000 X:0000 Y:FF34 D:0000 DB:2B S:1FCD P:envmxdIZc HC:258 VC:062 00

; Reload method barrel

$00:83F0 B9 00 00    LDA $0000,y[$2B:FF34]   A:0000 X:0000 Y:FF34 D:0000 DB:2B S:1FCD P:envmxdIZc HC:274 VC:062 00
$00:83F3 29 FF 00    AND #$00FF              A:063F X:0000 Y:FF34 D:0000 DB:2B S:1FCD P:envmxdIzc HC:314 VC:062 00
$00:83F6 C8          INY                     A:003F X:0000 Y:FF34 D:0000 DB:2B S:1FCD P:envmxdIzc HC:338 VC:062 00
$00:83F7 D0 0E       BNE $0E    [$8407]      A:003F X:0000 Y:FF35 D:0000 DB:2B S:1FCD P:eNvmxdIzc HC:352 VC:062 00

; Bank src bump + wrap

$00:83F9 A0 00 80    LDY #$8000              A:00FF X:017A Y:0000 D:0000 DB:2B S:1FCD P:envmxdIZC HC:796 VC:257 00
$00:83FC E2 20       SEP #$20                A:00FF X:017A Y:8000 D:0000 DB:2B S:1FCD P:eNvmxdIzC HC:820 VC:257 00
$00:83FE 48          PHA                     A:00FF X:017A Y:8000 D:0000 DB:2B S:1FCD P:eNvMxdIzC HC:842 VC:257 00
$00:83FF 8B          PHB                     A:00FF X:017A Y:8000 D:0000 DB:2B S:1FCC P:eNvMxdIzC HC:864 VC:257 00
$00:8400 68          PLA                     A:00FF X:017A Y:8000 D:0000 DB:2B S:1FCB P:eNvMxdIzC HC:886 VC:257 00
$00:8401 1A          INC A                   A:002B X:017A Y:8000 D:0000 DB:2B S:1FCC P:envMxdIzC HC:914 VC:257 00
$00:8402 48          PHA                     A:002C X:017A Y:8000 D:0000 DB:2B S:1FCC P:envMxdIzC HC:928 VC:257 00
$00:8403 AB          PLB                     A:002C X:017A Y:8000 D:0000 DB:2B S:1FCB P:envMxdIzC HC:950 VC:257 00
$00:8404 68          PLA                     A:002C X:017A Y:8000 D:0000 DB:2C S:1FCC P:envMxdIzC HC:978 VC:257 00
$00:8405 C2 20       REP #$20                A:00FF X:017A Y:8000 D:0000 DB:2C S:1FCD P:eNvMxdIzC HC:1006 VC:257 00

; Exit check

$00:8407 C6 86       DEC $86    [$00:0086]   A:003F X:0000 Y:FF35 D:0000 DB:2B S:1FCD P:eNvmxdIzc HC:374 VC:062 00
$00:8409 D0 03       BNE $03    [$840E]      A:003F X:0000 Y:FF35 D:0000 DB:2B S:1FCD P:envmxdIzc HC:428 VC:062 00
00/840B: 4C D0 84     JMP $84D0

; Full 8-bits recharged

$00:840E 09 00 FF    ORA #$FF00              A:003F X:0000 Y:FF35 D:0000 DB:2B S:1FCD P:envmxdIzc HC:450 VC:062 00
$00:8411 85 94       STA $94    [$00:0094]   A:FF3F X:0000 Y:FF35 D:0000 DB:2B S:1FCD P:eNvmxdIzc HC:474 VC:062 00

; Now select decoder method
; 0 -> LZ
; 1 -> Raw

$00:8413 A5 94       LDA $94    [$00:0094]   A:FF3F X:0000 Y:FF35 D:0000 DB:2B S:1FCD P:eNvmxdIzc HC:506 VC:062 00
$00:8415 29 01 00    AND #$0001              A:FF3F X:0000 Y:FF35 D:0000 DB:2B S:1FCD P:eNvmxdIzc HC:538 VC:062 00
$00:8418 F0 33       BEQ $33    [$844D]      A:0001 X:0000 Y:FF35 D:0000 DB:2B S:1FCD P:envmxdIzc HC:562 VC:062 00

; Load raw byte

$00:841A B9 00 00    LDA $0000,y[$2B:FF35]   A:0001 X:0000 Y:FF35 D:0000 DB:2B S:1FCD P:envmxdIzc HC:578 VC:062 00
$00:841D 29 FF 00    AND #$00FF              A:0706 X:0000 Y:FF35 D:0000 DB:2B S:1FCD P:envmxdIzc HC:618 VC:062 00
$00:8420 C8          INY                     A:0006 X:0000 Y:FF35 D:0000 DB:2B S:1FCD P:envmxdIzc HC:642 VC:062 00
$00:8421 D0 0E       BNE $0E    [$8431]      A:0006 X:0000 Y:FF36 D:0000 DB:2B S:1FCD P:eNvmxdIzc HC:656 VC:062 00

; Bank src bump + wrap

$00:8423 A0 00 80    LDY #$8000              A:00C3 X:03E1 Y:0000 D:0000 DB:21 S:1FD0 P:envmxdIZC HC:986 VC:040 00
$00:8426 E2 20       SEP #$20                A:00C3 X:03E1 Y:8000 D:0000 DB:21 S:1FD0 P:eNvmxdIzC HC:1010 VC:040 00
$00:8428 48          PHA                     A:00C3 X:03E1 Y:8000 D:0000 DB:21 S:1FD0 P:eNvMxdIzC HC:1032 VC:040 00
$00:8429 8B          PHB                     A:00C3 X:03E1 Y:8000 D:0000 DB:21 S:1FCF P:eNvMxdIzC HC:1054 VC:040 00
$00:842A 68          PLA                     A:00C3 X:03E1 Y:8000 D:0000 DB:21 S:1FCE P:eNvMxdIzC HC:1076 VC:040 00
$00:842B 1A          INC A                   A:0021 X:03E1 Y:8000 D:0000 DB:21 S:1FCF P:envMxdIzC HC:1104 VC:040 00
$00:842C 48          PHA                     A:0022 X:03E1 Y:8000 D:0000 DB:21 S:1FCF P:envMxdIzC HC:1118 VC:040 00
$00:842D AB          PLB                     A:0022 X:03E1 Y:8000 D:0000 DB:21 S:1FCE P:envMxdIzC HC:1140 VC:040 00
$00:842E 68          PLA                     A:0022 X:03E1 Y:8000 D:0000 DB:22 S:1FCF P:envMxdIzC HC:1168 VC:040 00
$00:842F C2 20       REP #$20                A:00C3 X:03E1 Y:8000 D:0000 DB:22 S:1FD0 P:eNvMxdIzC HC:1196 VC:040 00

; Exit check

$00:8431 C6 86       DEC $86    [$00:0086]   A:0006 X:0000 Y:FF36 D:0000 DB:2B S:1FCD P:eNvmxdIzc HC:678 VC:062 00
$00:8433 D0 03       BNE $03    [$8438]      A:0006 X:0000 Y:FF36 D:0000 DB:2B S:1FCD P:envmxdIzc HC:732 VC:062 00
$00:8435 4C D0 84    JMP $84D0  [$08:84D0]   A:007F X:027F Y:D8C7 D:0000 DB:08 S:1FCC P:envmxdIZC HC:804 VC:033 00

; Commit raw byte

$00:8438 E2 20       SEP #$20                A:0006 X:0000 Y:FF36 D:0000 DB:2B S:1FCD P:envmxdIzc HC:754 VC:062 00
$00:843A 8D 80 21    STA $2180  [$2B:2180]   A:0006 X:0000 Y:FF36 D:0000 DB:2B S:1FCD P:envMxdIzc HC:776 VC:062 00

; Update cache value and cursor

$00:843D A6 92       LDX $92    [$00:0092]   A:0006 X:0000 Y:FF36 D:0000 DB:2B S:1FCD P:envMxdIzc HC:806 VC:062 00
$00:843F 9F 00 20 7E STA $7E2000,x[$7E:23BE] A:0006 X:03BE Y:FF36 D:0000 DB:2B S:1FCD P:envMxdIzc HC:838 VC:062 00
$00:8443 C2 20       REP #$20                A:0006 X:03BE Y:FF36 D:0000 DB:2B S:1FCD P:envMxdIzc HC:878 VC:062 00
$00:8445 8A          TXA                     A:0006 X:03BE Y:FF36 D:0000 DB:2B S:1FCD P:envmxdIzc HC:900 VC:062 00
$00:8446 1A          INC A                   A:03BE X:03BE Y:FF36 D:0000 DB:2B S:1FCD P:envmxdIzc HC:914 VC:062 00
$00:8447 25 6C       AND $6C    [$00:006C]   A:03BF X:03BE Y:FF36 D:0000 DB:2B S:1FCD P:envmxdIzc HC:928 VC:062 00
$00:8449 85 92       STA $92    [$00:0092]   A:03BF X:03BE Y:FF36 D:0000 DB:2B S:1FCD P:envmxdIzc HC:960 VC:062 00
$00:844B 80 9A       BRA $9A    [$83E7]      A:03BF X:03BE Y:FF36 D:0000 DB:2B S:1FCD P:envmxdIzc HC:992 VC:062 00

; --------------------------------------------------------------

$00:844D A5 74       LDA $74    [$00:0074]   A:0000 X:03C3 Y:FF3B D:0000 DB:2B S:1FCD P:envmxdIZC HC:320 VC:065 00
$00:844F 85 76       STA $76    [$00:0076]   A:0002 X:03C3 Y:FF3B D:0000 DB:2B S:1FCD P:envmxdIzC HC:352 VC:065 00

; Load window byte

$00:8451 B9 00 00    LDA $0000,y[$2B:FF3B]   A:0002 X:03C3 Y:FF3B D:0000 DB:2B S:1FCD P:envmxdIzC HC:384 VC:065 00
$00:8454 29 FF 00    AND #$00FF              A:FF7C X:03C3 Y:FF3B D:0000 DB:2B S:1FCD P:eNvmxdIzC HC:424 VC:065 00
$00:8457 C8          INY                     A:007C X:03C3 Y:FF3B D:0000 DB:2B S:1FCD P:envmxdIzC HC:448 VC:065 00
$00:8458 D0 0E       BNE $0E    [$8468]      A:007C X:03C3 Y:FF3C D:0000 DB:2B S:1FCD P:eNvmxdIzC HC:462 VC:065 00

; Bank src bump + wrap

00/845A: A0 00 80     LDY #$8000
00/845D: E2 20        SEP #$20
00/845F: 48           PHA 
00/8460: 8B           PHB 
00/8461: 68           PLA 
00/8462: 1A           INC 
00/8463: 48           PHA 
00/8464: AB           PLB 
00/8465: 68           PLA 
00/8466: C2 20        REP #$20

; Exit check

$00:8468 C6 86       DEC $86    [$00:0086]   A:007C X:03C3 Y:FF3C D:0000 DB:2B S:1FCD P:eNvmxdIzC HC:484 VC:065 00
$00:846A F0 64       BEQ $64    [$84D0]      A:007C X:03C3 Y:FF3C D:0000 DB:2B S:1FCD P:envmxdIzC HC:538 VC:065 00

$00:846C 85 8E       STA $8E    [$00:008E]   A:007C X:03C3 Y:FF3C D:0000 DB:2B S:1FCD P:envmxdIzC HC:554 VC:065 00

; Load run byte

$00:846E B9 00 00    LDA $0000,y[$2B:FF3C]   A:007C X:03C3 Y:FF3C D:0000 DB:2B S:1FCD P:envmxdIzC HC:586 VC:065 00
$00:8471 29 FF 00    AND #$00FF              A:B9FF X:03C3 Y:FF3C D:0000 DB:2B S:1FCD P:eNvmxdIzC HC:626 VC:065 00
$00:8474 C8          INY                     A:00FF X:03C3 Y:FF3C D:0000 DB:2B S:1FCD P:envmxdIzC HC:650 VC:065 00
$00:8475 D0 0E       BNE $0E    [$8485]      A:00FF X:03C3 Y:FF3D D:0000 DB:2B S:1FCD P:eNvmxdIzC HC:664 VC:065 00

; Bank src bump + wrap

$00:8477 A0 00 80    LDY #$8000              A:0070 X:0142 Y:0000 D:0000 DB:23 S:1FD6 P:envmxdIZC HC:072 VC:184 00
$00:847A E2 20       SEP #$20                A:0070 X:0142 Y:8000 D:0000 DB:23 S:1FD6 P:eNvmxdIzC HC:096 VC:184 00
$00:847C 48          PHA                     A:0070 X:0142 Y:8000 D:0000 DB:23 S:1FD6 P:eNvMxdIzC HC:118 VC:184 00
$00:847D 8B          PHB                     A:0070 X:0142 Y:8000 D:0000 DB:23 S:1FD5 P:eNvMxdIzC HC:140 VC:184 00
$00:847E 68          PLA                     A:0070 X:0142 Y:8000 D:0000 DB:23 S:1FD4 P:eNvMxdIzC HC:162 VC:184 00
$00:847F 1A          INC A                   A:0023 X:0142 Y:8000 D:0000 DB:23 S:1FD5 P:envMxdIzC HC:190 VC:184 00
$00:8480 48          PHA                     A:0024 X:0142 Y:8000 D:0000 DB:23 S:1FD5 P:envMxdIzC HC:204 VC:184 00
$00:8481 AB          PLB                     A:0024 X:0142 Y:8000 D:0000 DB:23 S:1FD4 P:envMxdIzC HC:226 VC:184 00
$00:8482 68          PLA                     A:0024 X:0142 Y:8000 D:0000 DB:24 S:1FD5 P:envMxdIzC HC:254 VC:184 00
$00:8483 C2 20       REP #$20                A:0070 X:0142 Y:8000 D:0000 DB:24 S:1FD6 P:envMxdIzC HC:282 VC:184 00

; Exit check

$00:8485 C6 86       DEC $86    [$00:0086]   A:00FF X:03C3 Y:FF3D D:0000 DB:2B S:1FCD P:eNvmxdIzC HC:686 VC:065 00
$00:8487 F0 47       BEQ $47    [$84D0]      A:00FF X:03C3 Y:FF3D D:0000 DB:2B S:1FCD P:envmxdIzC HC:740 VC:065 00

$00:8489 85 90       STA $90    [$00:0090]   A:00FF X:03C3 Y:FF3D D:0000 DB:2B S:1FCD P:envmxdIzC HC:756 VC:065 00

; ---------------------------------------------------------------

; Unpack upper window bits

$00:848B 25 72       AND $72    [$00:0072]   A:00FF X:03C3 Y:FF3D D:0000 DB:2B S:1FCD P:envmxdIzC HC:788 VC:065 00
$00:848D 0A          ASL A                   A:00C0 X:03C3 Y:FF3D D:0000 DB:2B S:1FCD P:envmxdIzC HC:820 VC:065 00
$00:848E C6 76       DEC $76    [$00:0076]   A:0180 X:03C3 Y:FF3D D:0000 DB:2B S:1FCD P:envmxdIzc HC:834 VC:065 00
$00:8490 F0 0B       BEQ $0B    [$849D]      A:0180 X:03C3 Y:FF3D D:0000 DB:2B S:1FCD P:envmxdIzc HC:888 VC:065 00
$00:8492 0A          ASL A                   A:0180 X:03C3 Y:FF3D D:0000 DB:2B S:1FCD P:envmxdIzc HC:904 VC:065 00
$00:8493 C6 76       DEC $76    [$00:0076]   A:0300 X:03C3 Y:FF3D D:0000 DB:2B S:1FCD P:envmxdIzc HC:918 VC:065 00
$00:8495 F0 06       BEQ $06    [$849D]      A:0300 X:03C3 Y:FF3D D:0000 DB:2B S:1FCD P:envmxdIZc HC:972 VC:065 00
$00:8497 0A          ASL A                   A:0380 X:0000 Y:E3F0 D:0000 DB:26 S:1FD3 P:envmxdIzc HC:110 VC:070 00
$00:8498 C6 76       DEC $76    [$00:0076]   A:0700 X:0000 Y:E3F0 D:0000 DB:26 S:1FD3 P:envmxdIzc HC:124 VC:070 00
$00:849A F0 01       BEQ $01    [$849D]      A:0700 X:0000 Y:E3F0 D:0000 DB:26 S:1FD3 P:envmxdIZc HC:178 VC:070 00
$00:849C 0A          ASL A                   A:0780 X:0000 Y:E2BE D:0000 DB:23 S:1FD6 P:envmxdIzc HC:470 VC:225 00

; LZ window cursor

$00:849D 05 8E       ORA $8E    [$00:008E]   A:0300 X:03C3 Y:FF3D D:0000 DB:2B S:1FCD P:envmxdIZc HC:994 VC:065 00
$00:849F 85 8E       STA $8E    [$00:008E]   A:037C X:03C3 Y:FF3D D:0000 DB:2B S:1FCD P:envmxdIzc HC:1026 VC:065 00

; Compute LZ run amount (with mask)

$00:84A1 A5 90       LDA $90    [$00:0090]   A:037C X:03C3 Y:FF3D D:0000 DB:2B S:1FCD P:envmxdIzc HC:1058 VC:065 00
$00:84A3 25 70       AND $70    [$00:0070]   A:00FF X:03C3 Y:FF3D D:0000 DB:2B S:1FCD P:envmxdIzc HC:1090 VC:065 00
$00:84A5 18          CLC                     A:003F X:03C3 Y:FF3D D:0000 DB:2B S:1FCD P:envmxdIzc HC:1122 VC:065 00
$00:84A6 69 03 00    ADC #$0003              A:003F X:03C3 Y:FF3D D:0000 DB:2B S:1FCD P:envmxdIzc HC:1136 VC:065 00
$00:84A9 85 90       STA $90    [$00:0090]   A:0042 X:03C3 Y:FF3D D:0000 DB:2B S:1FCD P:envmxdIzc HC:1160 VC:065 00

; --------------------------------------------------------------

; Load next LZ src cursor

$00:84AB A5 8E       LDA $8E    [$00:008E]   A:0042 X:03C3 Y:FF3D D:0000 DB:2B S:1FCD P:envmxdIzc HC:1192 VC:065 00
$00:84AD 25 6C       AND $6C    [$00:006C]   A:037C X:03C3 Y:FF3D D:0000 DB:2B S:1FCD P:envmxdIzc HC:1224 VC:065 00
$00:84AF AA          TAX                     A:037C X:03C3 Y:FF3D D:0000 DB:2B S:1FCD P:envmxdIzc HC:1256 VC:065 00

; Commit LZ byte

$00:84B0 E2 20       SEP #$20                A:037C X:037C Y:FF3D D:0000 DB:2B S:1FCD P:envmxdIzc HC:1270 VC:065 00
$00:84B2 BF 00 20 7E LDA $7E2000,x[$7E:237C] A:037C X:037C Y:FF3D D:0000 DB:2B S:1FCD P:envMxdIzc HC:1292 VC:065 00
$00:84B6 8D 80 21    STA $2180  [$2B:2180]   A:0300 X:037C Y:FF3D D:0000 DB:2B S:1FCD P:envMxdIZc HC:1332 VC:065 00

; Cache byte written (current LZ dest)

$00:84B9 A6 92       LDX $92    [$00:0092]   A:0300 X:037C Y:FF3D D:0000 DB:2B S:1FCD P:envMxdIZc HC:1362 VC:065 00
$00:84BB 9F 00 20 7E STA $7E2000,x[$7E:23C4] A:0300 X:03C4 Y:FF3D D:0000 DB:2B S:1FCD P:envMxdIzc HC:026 VC:066 00

; Bump LZ dest cursor

$00:84BF C2 20       REP #$20                A:0300 X:03C4 Y:FF3D D:0000 DB:2B S:1FCD P:envMxdIzc HC:066 VC:066 00
$00:84C1 8A          TXA                     A:0300 X:03C4 Y:FF3D D:0000 DB:2B S:1FCD P:envmxdIzc HC:088 VC:066 00
$00:84C2 1A          INC A                   A:03C4 X:03C4 Y:FF3D D:0000 DB:2B S:1FCD P:envmxdIzc HC:102 VC:066 00
$00:84C3 25 6C       AND $6C    [$00:006C]   A:03C5 X:03C4 Y:FF3D D:0000 DB:2B S:1FCD P:envmxdIzc HC:116 VC:066 00
$00:84C5 85 92       STA $92    [$00:0092]   A:03C5 X:03C4 Y:FF3D D:0000 DB:2B S:1FCD P:envmxdIzc HC:148 VC:066 00

; Bump LZ src cursor and shrink run

$00:84C7 E6 8E       INC $8E    [$00:008E]   A:03C5 X:03C4 Y:FF3D D:0000 DB:2B S:1FCD P:envmxdIzc HC:180 VC:066 00
$00:84C9 C6 90       DEC $90    [$00:0090]   A:03C5 X:03C4 Y:FF3D D:0000 DB:2B S:1FCD P:envmxdIzc HC:234 VC:066 00
$00:84CB D0 DE       BNE $DE    [$84AB]      A:03C5 X:03C4 Y:FF3D D:0000 DB:2B S:1FCD P:envmxdIzc HC:288 VC:066 00

; Normal procedure

$00:84CD 4C E7 83    JMP $83E7  [$2B:83E7]   A:0006 X:0005 Y:FF3D D:0000 DB:2B S:1FCD P:envmxdIZc HC:430 VC:089 00

; --------------------------------------------------------------

; Done

$00:84D0 AB          PLB                     A:00FF X:0123 Y:82DB D:0000 DB:2C S:1FCD P:envmxdIZC HC:096 VC:178 00
$00:84D1 FA          PLX                     A:00FF X:0123 Y:82DB D:0000 DB:00 S:1FCE P:envmxdIZC HC:124 VC:178 00
$00:84D2 6B          RTL                     A:00FF X:0000 Y:82DB D:0000 DB:00 S:1FD0 P:envmxdIZC HC:160 VC:178 00

; ----------------------------------------------------------

1. [$07:8F40] ($38f40) = directory listing (script)
+ 0-7 = file name
+ 8-9 = # individual files
+ a-b = relative offset to next file (see 1a below)(add $8000)
+ c-d = relative script bank (add $07)
+ e-f = script offset

The table starts at $38000 and goes to $38f5f.


1a. [$07:D850] ($3d850) = sequential list of (script) files
+ 0-7 = file name
+ c-d = size of output
+ e-f = size of input

- [$35:A68E] $1aa68e = script_00 / $cc5 -> $15b1 (58.8%)
- [$35:B353] $1ab353 = script_01 / $d1b


Old script: $35a68e-37f76d [$150e0 bytes]
New script: $35a68e-37f551 [$14ec4 bytes] = $21c gain or 0.5 KB

Old all: $078000-3a9f84 [$199f85 bytes]
New all: $078000-39e456 [$196457 bytes] = $3b2e ~ 15 KB gain